﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;

namespace WindowsGame1.Model
{
    class Player
    {
        //fält
        Vector2         _position = new Vector2 (5.0f, 5);
        Vector2         _speed = new Vector2(0, 0);
        public Vector2  _sizes = new Vector2(0.9f, 0.9f);
        private Vector2 _velocity = Vector2.Zero;
        int             _currentHealth = 100;

        //funktion för att kunna dela med sig av livet
        internal int GetCurrentHealth()
        {
            return _currentHealth;
        }

        //funktion för att reducera liv
        internal void ReduceHealth(int a_healthToReduce)
        {
            this._currentHealth -= a_healthToReduce;
        }

        //funktion för att lägga till liv
        internal void AddHealth(int a_healthToAdd)
        {
            this._currentHealth += a_healthToAdd;
            //Felhantering så man inte kan ha mer än 100 i liv
            if (this._currentHealth >= 100)
            {
                this._currentHealth = 100;
            }
        }

        //funktion för att dela med sig av spelarens position
        internal Vector2 GetPosition()
        {
            return _position;
        }

        //funktion för att sätta position
        internal void SetPosition(float a_x, float a_y)
        {
            _position.X = a_x;
            _position.Y = a_y;
        }

        //funktion för att dela med sig av hastigheten
        internal Vector2 GetSpeed()
        {
            return _speed;
        }

        //funktion för att ställa in hastiheten på spelaren
        internal void SetSpeed(float a_x, float a_y)
        {
            _speed.X = a_x;
            _speed.Y = a_y;
        }

        //funktion som uppdaterar spelaren gällande hastighet, gravitation
        internal void Update(float a_elapsedTime)
        {
            Vector2 gravityAcceleration = new Vector2(-0.0f, 14.00f);

            _position = _position + _speed * a_elapsedTime + gravityAcceleration * a_elapsedTime * a_elapsedTime;

            _speed = _speed + a_elapsedTime * gravityAcceleration;
        }

        //funktion för att hoppa
        internal void DoJump()
        {
            _speed.Y = -10; //speed upwards
        }

        //gå höger..
        internal void GoRight()
        {
            _speed.X = 5;
        }

        //gå vänster..
        internal void GoLeft()
        {
            _speed.X = -5;
        }
    }
}
